#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <unistd.h>

static void sig_usr(int);

int main(){
    SIGABRT;
    SIGFPE;
    SIGPOLL;
    SIGPROF;
    SIGSEGV;
    SIGSTKFLT;
    SIGTRAP;

    if(signal(SIGUSR1, sig_usr) == SIG_ERR){
        printf("%s\n", strerror(errno));
        printf("signal error!");
        exit(0);
    }

    if(signal(SIGUSR2, sig_usr) == SIG_ERR){
        printf("%s\n", strerror(errno));
        printf("signal error!");
        exit(0);
    }
    for(; ;){
        pause();
    }
    return 0;
}

static void sig_usr(int signo){
    if(signo == SIGUSR1){
        printf("received SIGUSR1\n");
    }else if(signo == SIGUSR2){
        printf("received SIGUSR2\n");
    }else{
        printf("unkown signal: %d", signo);
    }
    return;
}